System and methods for online/offline synchronization

ABSTRACT

Embodiments allocate and synchronize virtual currency balance of a user among multiple user devices. A user profile is maintained at a central server. The user profile stores a total virtual currency balance and a designation of multiple user devices associated with the user. The total virtual currency balance may be divided among and allocated to the multiple user devices, for example, based on usage data associated with each user device. The portion of the total virtual currency balance allocated to each user device may be stored locally at a local wallet of the corresponding user device. The local virtual currency balance on a user device may be used to purchase goods or services, such as playing a game. If the locally stored virtual currency balance of a given user device runs low, the user device may request additional virtual currency from other user devices without contacting the central server.

BACKGROUND

Virtual currency is a digital representation of value that is used toacquire goods or services on digital platforms. Often, the virtualcurrency is used by digital merchants as a strategy to optimize useracquisition, user conversion and user retention. For example, just likeair miles for a mileage program can be used to attract and retain acustomer or discount coupons can be used to acquire a new user, the freeand/or paid virtual currency points can be used to entice users to playgames. In some cases, users may interact with the merchant via a userdevice including a local wallet that stores a virtual currency balanceof the user. As users increasingly use devices (e.g. as mobile phones,desktop computers, laptop computers, tablets, etc.) to engage with themerchant, the synchronization of the local wallet balance and activitiesacross these devices becomes a challenge.

There are a number of problems relating to the use of devices associatedwith a same user account. For example, a user plays a game online on adesktop or a network-connected console at home, and the user has 1000points in a user account to play the game. The user then goes offlineand continues to play the game with the available balance on a mobilephone of the user. All the 1000 points balance was used up on the mobilephone. But since the usage was in offline mode, the balance andactivities are not synchronized with the backend server providing theservice (e.g. the game) and storing the user account with 1000 points.The user then comes back online, without synchronizing the activities onthe user devices (e.g. the desktop or the network-connected console, andthe mobile phone), starts to play the game online again, e.g. when theuser device is connected to the backend server via a network connection.The backend server, without realizing the additional offline activities,mistakenly allows the user to continue to use the 1000 points balanceoriginally recorded before the user went offline. Accordingly, thebackend server unintentionally allows the same 1000 points balance to beused multiple times across multiple devices causing an overdraft problemand resulting in revenue loss for the service provider (e.g. the backendserver).

Embodiments of the present invention solve these problems and otherproblems, individually and collectively.

BRIEF SUMMARY

Embodiments of the present invention enable the synchronization of auser's wallet balance and activities across multiple user devices,either online or offline, to achieve a smooth user experience, andreduce the risk of unwanted fraud and revenue loss.

A central wallet system may divide the available total virtual currency(e.g. points, credits, gaming data) balance among multiple user devicesbased on, for example, a user profile, a device usage profile, and/or anumber of installed applications on user devices. For example, if thegame usage statistics suggests that on average 30% of balance isconsumed by mobile phone, 30% by desktop, and 40% by gaming console,then 30% of the total virtual currency balance is allocated to themobile phone when it goes offline, 30% of the total virtual currencybalance is allocated to the desktop, and 40% of the total virtualcurrency is allocated to the game console. The allocation can bedynamically adjusted in time according to the user's personal usagedata.

When the balance of a first user device is low or depleted, the localwallet of the first user device can connect to the central wallet toacquire additional virtual currency. Alternatively, the first userdevice can communicate with a second user device (without any of theuser devices being online, e.g. communicating with the central server),and request the second user device to release a portion of itslocally-stored balance to the first user device. When multiple userdevices are on the same private network (e.g. a home network), thewallet discovery process may be triggered automatically. For example,each local wallet may be capable of advertising its service (e.g. itslocal virtual currency balance) to the other local wallets on the samenetwork.

Embodiments provide a method including determining, by a central server,a total virtual currency balance associated with a user profile. Theuser profile is associated with a first user device and a second userdevice. The method also includes allocating and communicating a firstportion of the total virtual currency balance to the first user device.The method further includes allocating and communicating a secondportion of the total virtual currency balance to the second user device.The first portion of the total virtual currency balance is storedlocally on a memory or storage media of the first user device as a firstbalance and the second portion of the total virtual currency balance isstored locally on a memory or storage media of the second user device asa second balance. The total virtual currency may be one of virtualmoney, loyalty points, game points and game data.

In some embodiments, the method further includes communicating with thefirst device to receive a current value of the first balance, andcommunicating with the second device to receive a current value of thesecond balance. The method also includes determining a sum of thecurrent value of the first balance and the current value of the secondbalance, and comparing the sum to the total virtual currency balanceassociated with the user profile to ensure that the sum is less than orequal to the total virtual currency balance associated with the userprofile. The method further includes transmitting a message to the firstuser device or the second user device to acquire additional virtualcurrency when the sum is below a predetermined threshold.

In some embodiments, the user profile may include a first pre-determinedusage data assigned to the first user device and a second pre-determinedusage data assigned to the second user device. The pre-determined firstusage data indicates a usage frequency for the first user device and thepre-determined second usage data indicates a usage frequency for thesecond user device. The first portion of the total virtual currencybalance may be allocated to the first user device based on the firstpre-determined usage data assigned to the first user device, and thesecond portion of the total virtual currency balance may be allocated tothe second user device based on the second pre-determined usage dataassigned to the second user device.

According to some embodiments, the central server may monitor usage ofthe first user device to determine actual usage data associated with thefirst user device, and dynamically adjust a value of the first portionof the total virtual currency balance allocated to the first user devicebased on the determined actual usage data associated with the first userdevice.

At least a portion of the first balance is used to acquire a service oran item provided by one or more servers accessible via the first userdevice. In some embodiments, the first user device communicates with thesecond user device to receive a portion of the second balance stored onthe memory or storage media of the second device when the first userdevice is offline with respect to the central server. The portion of thesecond balance is subtracted from the second balance and added to thefirst balance.

Embodiments may also provide a system including a processor and acomputer readable medium coupled to the processor. The computer readablemedium comprises code, executable by the processor, to implement theabove-described method.

Embodiments further provide a method including receiving, by a firstuser device, an allocation of a first portion of total virtual currencybalance associated with a user profile from a central server. The firstuser device is associated with the user profile. The method includesstoring, by the first user device, the first portion of the totalvirtual currency balance locally on a memory or storage media of thefirst user device as a first balance. The method also includesrequesting, by the first user device, additional virtual currency from asecond user device. The second user device is associated with the userprofile at the central server. The second user device stores a secondportion of the total virtual currency balance associated with the userprofile as a second balance. The method also includes receiving, by thefirst user device, the additional virtual currency from the second userdevice. The additional virtual currency is subtracted from the secondbalance and added to the first balance when the first user device isoffline with respect to the central server. The total virtual currencyis one of virtual money, loyalty points, game points and game data.

In some embodiments, the method may also include sending, by the firstuser device, a current value of the first balance to the central serverin response to a request received from the central server. The methodmay further include receiving a message from the central server toacquire supplemental virtual currency when a sum of the current value ofthe first balance and a current value of the second balance is below apredetermined threshold.

In some embodiments, the method may also include using, by the firstuser device, at least a portion of the first balance to acquire aservice or an item provided by a server. The first user device providesan interface for a user to access the server using the first userdevice.

In some embodiments, the user profile includes pre-determined usage dataassigned to the first user device, the usage data indicating a usagefrequency for the first user device. The first portion of the totalvirtual currency balance is allocated to the first user device based onthe usage data assigned to the first user device. In such embodiments,the method may also include sending, by the first user device, actualusage data to the central server. The method may also include receiving,by the first user device, a dynamically adjusted value of the firstportion of the total virtual currency balance based on the actual usagedata.

These and other embodiments are described in further detail below.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a block diagram including multi-channel interactionwith a central server in accordance with embodiments of the presentapplication.

FIG. 2 shows a block diagram of a central server computer in accordancewith embodiments of the present application.

FIG. 3 shows block diagrams of exemplary user devices in accordance withsome embodiments of the invention.

FIG. 4 illustrates a system and a flow diagram for allocating andsynchronizing virtual currency balances on multiple user devices inaccordance with some embodiments of the invention.

FIG. 5 shows an exemplary computer system according to embodiments ofthe present invention.

DETAILED DESCRIPTION

Embodiments are directed to methods, apparatuses, computer readablemedia and systems for allocating and synchronizing virtual currencybalance of a user among multiple user devices. Embodiments maintain auser profile (e.g. a user account) of the user at a central server. Theuser profile stores a total virtual currency balance associated with anaccount of the user and a designation of multiple user devicesassociated with the user. For example, the user profile may storeidentification (ID) information for each one of the user devices. Thetotal virtual currency balance of the user may be divided among andallocated to the multiple user devices. In some embodiments, theallocation may be based on usage data associated with each user device.The portion of the total virtual currency balance allocated to each userdevice may be stored locally at a local wallet of the corresponding userdevice. The local virtual currency balance on a user device may be usedto purchase items (goods) or services, such as playing a game thatrequires users to spend virtual currency in order to play the game oradvance in the game. If the locally stored virtual currency balance of agiven user device runs low, the user device may request additionalvirtual currency from other user devices without contacting the centralserver. The local wallets stored on the user devices synchronize withthe central server when the user devices are connected to the centralserver.

According to various embodiments, each user device may store a localwallet component as an application residing on the user device. Thecentral server may store a central wallet component, for example as partof the user profile, where the total virtual currency balance andactivities of the user are stored and/or tracked. In some embodiments,the central wallet component may be stored in a central cloud system.

When an application is installed on a user device, the user may be askedto sign into the application or the service (e.g. game). Upon signingin, the central server may divide the available virtual currency balanceamong the user devices associated with the user account (e.g. registeredwith the central server) and allocate a portion of the available virtualcurrency balance to each user device. In some embodiments, theallocation may be communicated to the user through a user interface. Thecentral server may assign a unique ID for each local wallet such thateach local wallet may link to the central wallet (e.g. the user profile)using the unique local wallet ID. The local wallet ID may include acombination of a device ID (uniquely identifying the user device) and auser ID (uniquely identifying the user and/or the user profile).

In some embodiments, the central server may distribute the availablebalance (e.g. the total virtual currency balance) based on the deviceusage statistics, e.g. how much time the user spent on a given userdevice (e.g. mobile phone) compared to other user device(s) (e.g. a homegame console or a desktop). For example, if it is determined that theusage statistics suggests 30% of the balance is consumed by a first userdevice, 30% of the balance by a second user device, and 40% of thebalance by a third user device, then the central server allocates 30% ofbalance to first user device when the first device (or any other deviceoperated by the user) goes offline, 30% of balance to the second userdevice, and 40% of the balance to the third user device. The usagestatistics may be dynamically calculated from actual usage data, or bedetermined based on a prediction model. Even when the initialallocations are made based on pre-determined or predicted usagestatistics, the allocation can be dynamically adjusted in time accordingto actual usage data. Accordingly, the allocation may be increasinglyoptimized to fit the user behavior without compromising the userexperience.

Before discussing specific embodiments and examples, some descriptionsof terms used herein are provided below.

As used herein, a “user device” may comprise any suitable electronicdevice that may be transported and/or operated by a user, which may alsoprovide remote communication capabilities to a network. Examples ofremote communication capabilities include using a mobile phone(wireless) network, wireless data network (e.g. 3G, 4G or similarnetworks), Wi-Fi, Wi-Max, or any other communication medium that mayprovide access to a network such as the Internet or a private network.Examples of user devices include mobile phones (e.g. cellular phones),PDAs, tablet computers, net books, laptop computers, personal musicplayers, hand-held specialized readers, game consoles, etc. Furtherexamples of user devices may also include wearable devices, such assmart watches, fitness bands, ankle bracelets, rings, earrings, etc., aswell as automobiles with remote communication capabilities. A userdevice may comprise any suitable hardware and software for performingsuch functions, and may also include multiple devices or components(e.g. when a device has remote access to a network by tethering toanother device—i.e. using the other device as a modem—both devices takentogether may be considered a single mobile device). In some embodiments,the user device may provide a user interface (e.g. an application or abrowser) to play an electronic game or to access external resources suchas external servers. In some embodiments, the user device may be used toacquire a service or an item provided by the external servers.

A “central server” or a “server computer” may typically be a powerfulcomputer or cluster of computers. For example, the server computer canbe a large mainframe, a minicomputer cluster, or a group of serversfunctioning as a unit. The server computer may be associated with anentity such as a gaming platform, a merchant, a database (e.g. aninformation database, an application database, an entertainmentdatabase) or an entertainment platform.

A “user” may include an individual or an entity that uses a system. Auser may be associated with one or more accounts and/or user devices. Insome cases, the user may also be referred to as an account holder, orconsumer.

A “user profile” may include information associated with a user. In someembodiments, the user profile may be stored at a server computer, suchas the central server. The user profile may include user data such asuser identifying data (e.g. user name, address, age group, socialstatus, interests, etc.), user payment data (e.g. a payment accountidentifier of the user), virtual currency balance, one or more userdevice information, usage data (e.g. the amount of time that the userspends (i.e. usage frequency) on each user device associated with theuser profile).

“Virtual currency” may include digital money or other digital medium ofexchange such as loyalty points, game points and game data. The virtualcurrency may be used to acquire a service or an item provided by aserver computer (e.g. a gaming platform, a merchant server computer,etc.)

A “wallet” may refer to a digital wallet or an e-wallet which is asoftware application that allows an individual to conduct electroniccommerce transactions. A digital wallet may store payment credentials,bank account information, one or more digital wallet identifiers and/orthe like and can be used in a variety of transactions, such as but notlimited to eCommerce, social networks, money transfer/personal payments,mobile commerce, proximity payments, gaming, and/or the like for retailpurchases, digital goods purchases, utility payments, purchasing gamesor gaming credits from gaming websites, playing games, transferringfunds between users, and/or the like. A digital wallet may be designedto streamline the purchase and payment process. A digital wallet mayalso store transaction records (e.g., electronic receipts). In someembodiments, the wallet may store virtual currency balance. The walletmay be stored locally at a user device (e.g. a local wallet) orcentrally at a central server (e.g. a central wallet). The local walletmay be associated with a local wallet ID uniquely identifying the localwallet. In some embodiments, the local wallet ID may be formed based ona device ID uniquely identifying the device storing the local wallet,and a user ID uniquely identifying the owner of the user device.

Embodiments enable allocation of a user's wallet balance (e.g. virtualcurrency balance) to multiple user devices and synchronization of theuser's wallet balance and activities across multiple user devices. FIG.1 illustrates a block diagram including omni-channel interaction with acentral server computer 100. Specifically, a first user device 102 (e.g.a mobile communication device), a second user device 104 (e.g. a desktopcomputer) and a third user device 106 (e.g. a tablet computing device)may interact with the central server computer 100. The user devices 102,104, 106 may belong to the same user or to family and friends of theuser.

In some embodiments, the user may create a user profile 112 with thecentral server computer 100. The central server computer 100 may storethe user profile 112 at a user database 110. The user database 110 maybe stored at the central server computer 100 or may be remotelyaccessible to the central server computer 100. The user profile 112 mayinclude user data such as user identification data (e.g. user name,social media nickname(s), email address, telephone number, billingaddress, etc.), user payment data (e.g. payment account number,expiration date, security code, etc.), virtual currency balance of theuser, information associated with user devices 102, 104, 106 (e.g. amobile communication device, a tablet, a desktop computer, a gamingconsole, etc.), usage data (e.g. usage statistics) associated with eachuser device, a number of applications installed and/or provisioned oneach user device, etc. In some embodiments, the same user profile may beassociated with a desktop computer of a parent, a mobile communicationdevice of the parent and a laptop computer of the parent's child.

Each user device 102, 104, 106 may be identified in the user profile bya unique device ID. Each user device may be associated with usage data.In some embodiments, the usage data may be a pre-determined valueassigned to the user device. In other embodiments, the usage data may bedynamically determined by monitoring usage of each user device. In yetother embodiments, a preliminary pre-determined usage data value may beassigned to each user device. The usage data may then be dynamicallydetermined to account for actual usage of the user devices. For example,initially, the virtual currency balance of the user may be equallydivided among the registered user devices (e.g. the user devices thatare associated with the user profile). The central server computer 100may keep track of how often the user needs to replenish the balance oneach user device. Based on actual usage monitoring, the central servercomputer 100 may update the usage data associated with each user device.For example, if the central server computer 100 determines that the useruses the mobile device 70% of the time (or that the local virtualcurrency balance assigned to the mobile device depletes 70% times fasterthan other user devices), the central server computer 100 assign 70% ofthe total virtual currency balance of the user to the mobile device. Insome embodiments, the usage data may be determined based on a number ofapplications installed on a user device. For example, if a first userdevice has 10 applications installed thereon and a second user devicehas 100 applications installed thereon, it may be determined that thesecond user device is used more often and, hence, should get a largerallocation of total virtual currency balance.

Upon receiving the allocated portion of the total virtual currencybalance from the central server computer 100, each user device 102, 104,106 may locally store the allocated portion of the total balance as alocal virtual currency balance. For example, the local virtual currencybalance may be stored at a local wallet of the user device. The localvirtual currency balance may be used for activities performed on theuser device (e.g. to purchase goods or services, play games on the userdevice, etc.) or may be shared with other registered user devicesassociated with the user profile. For example, when the local virtualcurrency balance of the user device 102 depletes, the user device 102may contact the user device 104 and/or user device 106 (e.g., eitherthrough a direct connection or through an intermediate server computer)to request additional virtual currency. Such balance transfer may beperformed when the user device 102 is not connected to the centralserver computer 100 (e.g. cannot communicate with the central servercomputer 100) or when the user does not wish to acquire additionalvirtual currency prior to depleting all the available balance associatedwith other user devices.

When each user device 102, 104, 106 is subsequently connected to thecentral server computer 100, the central server computer 100 maysynchronize the user profile with the virtual currency balance and otheractivities performed on each user device 102, 104, 106. In someembodiments, the central server computer 100 may ensure that the sum ofthe current value of local virtual currency balance of each user device102, 104, 106 is less than or equal to the total virtual currencybalance previous stored on the central server computer 100.

In an exemplary embodiment, the central server computer 100 maydetermine that a given user profile may be associated with a totalvirtual currency balance of 1000 units at time t=0. The central servercomputer 100 may assign 700 units to user device 102, 200 units to userdevice 104, and 100 units to user device 106. Each user device 102,104,106 may locally store the virtual currency balance assigned to them.The user may start playing a game using the 700 units on the user device102. The user device 102 may no longer be in communication with thecentral server computer 100 while the user is playing the game. The usermay use up all of the 700 units allocated to and locally stored at theuser device 102. Instead of contacting the central server computer 100to acquire additional credit, the user may contact the user device 104via the user device 102 to transfer virtual currency balance to the userdevice 102. For example, the user may transfer 100 units from the userdevice 104 to the user device 102. The user may continue playing thegame on the user device 102 and use up the additional 100 units as well.The user may then continue playing the game on the user device 104 anduse 50 points. The user may also play the game on the user device 106and use all 100 points allocated to and locally stored by the userdevice 106. When the user devices 102, 104, 106 connects to the centralserver computer 100 at time t=t₁ (where t₁>0), the central servercomputer 100 may synchronize the data stored at the user profile withdata (e.g. virtual currency balance, gaming data, usage statistics,etc.) acquired from the user devices 102, 104, 106. In the exampleprovided above, the central server computer 100 may determine that theuser has only 50 units left in their total virtual currency balance. Insome embodiments, the central server computer 100 may notify the user ofthe remaining balance and invite user to acquire (e.g. purchase)additional virtual currency units.

When the user devices 102, 104, 106 are not in communication with thecentral server computer 100, they may communicate with each otherthrough a local area network, or directly using a wireless protocol suchas Bluetooth™ (classic or BLE or Bluetooth™ Low Energy). In addition totransferring virtual currency balances between these devices, it is alsopossible to transfer data regarding the state of play of a game thatresides on all three user devices 102, 104, 106 so that the game can beplayed and continued on any of the user devices 102, 104, 106 at anysuitable time.

In some embodiments, the central server computer 100 may not allow theuser to withdraw additional virtual currency units from the totalvirtual currency balance stored in the user profile unless allregistered user devices are connected and synchronized with the centralserver computer 100. This may prevent overdraft from the total balance.For example, in the embodiment illustrated above, when all user devicesare connected to the central server computer 100, the central servercomputer 100 may determine that the user has now only 50 units left intheir central wallet. In some embodiments, the central server computer100 may retrieve the 50 units from the user device 104 and allow theuser to use the 50 units on any of the user devices 102, 104, 106.

In some embodiments, in order to prevent overdraft on the total virtualcurrency balance, the central server computer 100 may not store thetotal virtual currency balance on the user profile database 110 once thetotal balance is divided among and allocated to the registered userdevices. The user profile database 110 may store a balance history toillustrate how the previous total balance have been allocated. However,once the allocation is complete, unless a local balance is transferredback from any user device to the central server computer 100 (and thusto the user profile), the central server computer 100 may no longerallow the user devices 102, 104, 106 to withdraw from the central wallet(e.g. the total balance stored in the user profile).

In some embodiments, the user devices 102, 104, 106 may communicate withthe central server computer 100 via a first communication channel orcommunications network 150. The user devices 102, 104, 106 maycommunicate with each other via a second communication channel orcommunications network 152. In some embodiments, the multiple userdevices may be connected to a same network (e.g. a home network).Suitable communications networks may include any one and/or thecombination of the following: a direct interconnection; the Internet; aLocal Area Network (LAN); a Metropolitan Area Network (MAN); anOperating Missions as Nodes on the Internet (OMNI); a secured customconnection; a Wide Area Network (WAN); a wireless network (e.g.,employing protocols such as, but not limited to a Wireless ApplicationProtocol (WAP), I-mode, and/or the like); and/or the like. In anexemplary embodiment, the first communication channel or communicationsnetwork 150 may include the Internet and the second communicationchannel or communications network 152 include a local communicationchannel, such as intranet, Bluetooth, personal area network or ShortMessage Service (SMS).

FIG. 2 shows a block diagram of a central server computer 100 inaccordance with embodiments of the present application. The centralserver computer 100 comprises a processor 212, a memory or storage 210,an external communication interface 208 (e.g. a network interface), auser database 110, and a computer readable medium 201.

The computer readable medium 201 may comprise an account registrationmodule 202, an analysis module 204, a balance allocation module 206 andany other suitable software module(s). The computer readable medium 201may also comprise code, executable by the processor 212 for implementinga method comprising determining a total virtual currency balanceassociated with a user profile, allocating and communicating a firstportion of the total virtual currency balance to the first user device,and allocating and communicating a second portion of the total virtualcurrency balance to the second user device. The user profile may beassociated with a first user device and a second user device. The firstportion of the total virtual currency balance may be stored locally on amemory or storage of the first user device as a first balance and thesecond portion of the total virtual currency balance may be storedlocally on a memory or storage of the second user device as a secondbalance.

The account registration module 202 may comprise code that causes theprocessor 212 to register an account for a user. For example, theaccount registration module 202 may generate a user account for the userat the user database 110. The user account may include information (e.g.user data) associated with the user. For example, the user account mayinclude user identification data (e.g. user name, social medianickname(s), email address, telephone number, billing address, etc.),user payment data (e.g. payment account number, expiration date,security code, etc.), virtual currency balance of the user, informationassociated with multiple user devices (e.g. a mobile communicationdevice, a tablet, a desktop computer, a gaming console, etc.), usagedata (e.g. usage statistics) associated with each user device, a numberof applications installed and/or provisioned on each user device, etc.

The balance allocation module 206 may retrieve the total virtualcurrency balance of the user from the user database 110 where the userprofile associated with the user is stored. The balance allocationmodule 206 may also retrieve, from the user database 110, informationabout user devices associated with the user profile. For example, thebalance allocation module 206 may retrieve information regarding userdevices registered with the user profile and usage data associated witheach user device. Upon retrieving the data from the user database 110,the balance allocation module 206 may divide the total virtual currencybalance among the multiple user devices. In some embodiments, thebalance allocation module 206 may divide the total virtual currencybalance among the user devices based on the usage data associated witheach device. The balance allocation module 206 may allocate portions ofthe total virtual currency balance to corresponding user devices.

In some embodiments, the initial allocation of the total virtualcurrency balance may be based on a pre-determined usage data assigned toeach user device. The pre-determined usage data may be indicative ofusage frequency (e.g., the total amount of time that a particular userdevice may be used to play a game) of each user device. The balanceallocation module 206 may monitor the usage of the user devices todetermine actual usage data associated with the user devices. Thebalance allocation module 206 may dynamically adjust (e.g. modify) theallocation of the virtual currency balance based on the actual usagedata.

The analysis module 204 may prevent overdraft from the total virtualcurrency balance by analyzing current local virtual currency balance foreach user device. The analysis module 204 may receive current values oflocal balances from the user devices and determine a sum of the currentvalues of the local balances. In some embodiments, the analysis module204 may receive data from the user devices via the externalcommunication interface 208. The analysis module 204 may then comparethe sum to the total virtual currency balance associated with the userprofile to ensure that the sum is less than or equal to the totalvirtual currency balance. In some embodiments, if the analysis module204 determines that the sum is below a predetermined threshold, theanalysis module 204 may generate a message to acquire additional virtualcurrency. The message may be transmitted to the user devices via theexternal communication interface 208.

Examples of the user devices 300 and 301 that may be operated by thesame user 350, according to some embodiments of the invention, are shownin FIG. 3. Each user device 300 or 301 may include circuitry that isused to enable certain device functions, such as communication,computing or gaming. The functional elements responsible for enablingthose functions may include a processor 302, 322 that can executeinstructions that implement the functions and operations of the device.The processor 302, 332 may access the memory 310, 330 (or anothersuitable data storage region or element), respectively, to retrieveinstructions or data used in executing the instructions, such as mobileapplications (e.g. games, merchant applications, or internet browser).Data input/output elements 306, 326, such as a keyboard or touchscreen,may be used to enable a user to operate the user devices 300, 301,respectively, and input data (e.g. to play a game). Data input/outputelements 306, 326 may also be configured to output data (via a speaker,for example). Display 304, 306 may also be used to output data to auser. Communications element 308, 310 may be used to enable datatransfer among the user devices 300, 301 via the communications channel152 or enable data transfer between the user devices 300, 301 and acentral server (e.g. central server computer 100 illustrated in FIG. 2)via a wired or wireless network to assist in connectivity to theInternet or other network, and enabling data transfer functions. In someembodiments, user devices 300 and 301 may transfer data therebetween vianear field communications (NFC) data transfer or another form of shortrange communications technology.

Referring now to user device 300, the memory 310 may comprise a digitalwallet application 312. The user device 300 may have any number ofmobile applications installed or stored on the memory 310 and is notlimited to that shown in FIG. 3. In some embodiments, the user device300 and the user device 301 may include at least one common application.For example, as illustrated in FIG. 3, application 314 may be installedboth on the user device 300 and user device 301. Each user device mayinclude additional application(s) that may be uniquely installed on theuser device. For example, in addition to application 314, application316 may be installed on the user device 300 and application 334 may beinstalled on the user device 301.

The memory 310 may also comprise code, executable by the processor 302for implementing a method comprising receiving an allocation of a firstportion of total virtual currency balance associated with a user profilefrom a central server, storing the first portion of the total virtualcurrency balance locally on the digital wallet application 312 as afirst balance, requesting additional virtual currency from the userdevice 301, and receiving the additional virtual currency from the userdevice 301. The user devices 300 and 301 may be associated with the userprofile at the central server. The user device 301 may locally store asecond portion of the total virtual currency balance associated with theuser profile at a digital wallet application 332 as a second balance inthe memory 330. The additional virtual currency may subtracted from thesecond balance and added to the first balance.

The digital wallet applications 312, 332 may be able to communicate witha central wallet, which in some embodiments may be stored at the centralserver computer 100. The digital wallet applications 312, 332 may beable to store and/or access virtual currency. As provided above, thedigital wallet applications 312, 332 may also be able to requestadditional virtual currency from other user devices. For example, thewallet application 312 may request additional virtual currency from thedigital wallet application 332 provided on the user device 301. Thedigital wallet application 332 provided on the user device 301 may sendall or a portion of the virtual currency balance allocated to the userdevice 301 by the central server computer 100 (e.g. by the balanceallocation module 206 of the central server computer 100) and locallystored at the digital wallet application 332.

In some embodiments, the user device 300 or 301 may send a message tothe central server when virtual currency has been transferred betweenthe user devices 300 and 301. In some embodiments, such transfer mayoccur when the user device 300 cannot communicate with the centralserver computer 100 (e.g. when the user device 300 is offline withrespect to the central server computer 100). In such embodiments, if theuser device 300 sends a message to the central server computer 100regarding the balance transfer, the message may be relayed when the userdevice 300 is online at a later time. In other embodiments, the transfermay occur when the user 350 does not want to acquire new virtualcurrency prior to using the local balances on other user devices.

A method for allocating and synchronizing virtual currency balancesamong multiple user devices and a central server according toembodiments of the invention can be described with respect to FIG. 4.The steps shown in any method herein may be performed sequentially or inany suitable order in embodiments of the invention. In some embodiments,one or more of the steps may be optional. The various messages describedbelow may use any suitable form of communication. In some embodiments, arequest or response may be in an electronic message format, such as ane-mail, a short messaging service (SMS) message, a multimedia messagingservice (MMS) message, a hypertext transfer protocol (HTTP) requestmessage, a transmission control protocol (TCP) packet, a web formsubmission. The request or response may be directed to any suitablelocation, such as an e-mail address, a telephone number, an internetprotocol (IP) address, or a uniform resource locator (URL). In someembodiments, a request or response may comprise a mix of differentmessage types, such as both email and SMS messages.

According to some embodiments, the user may interact with the centralserver computer 100 to create a user profile. The central servercomputer 100 may store the user profile at a user database 110. The userprofile may include a virtual currency balance associated with anaccount of the user in addition to other user data such as useridentification data, user payment data, etc. At step S402, the centralserver computer 100 may register the first user device 300 with the userprofile. For example, as part of the registration, the central servercomputer 100 may store a first unique device ID associated with thefirst user device 300 at the user profile. At step S404, the centralserver computer 100 may register the second user device 301 with theuser profile. For example, the central server computer 100 may store asecond unique device ID associated with the second user device 301 atthe user profile.

In some embodiments, as described herein, the user devices 300, 301 maycommunicate with each other to transfer virtual currency, game status,and other information while they are not connected to the central servercomputer 100. Accordingly, in some instances each user device 300, 301may be provide with a shared secret which may be shared with the centralserver computer 100. The shared secret may serve as proof that the userdevices 300, 301, and server computer 100 are allowed to shareinformation and dynamically adjust virtual currency balances betweeneach other. In some cases, the shared secret may be an encryption key,which can be used to sign data that is transferred between the userdevice 300, the user device 301, and the central server computer 100.Such encryption keys may be derived on the devices 300, 301 themselvesusing data on those devices (e.g., an account number or user logininformation), may be included in the installation of applications onthose devices, or may be delivered to those devices in separatecommunications.

At step S406, the central server computer 100 may interact with the userdatabase 110 to determine the total virtual balance associated with theuser profile. In some embodiments, the central server computer 100 mayalso retrieve, from the user database 110, pre-determined usage dataassociated with the first user device 300 and the second user device301.

The central server computer 100 may divide the total virtual currencybalance among the user device 300 and user device 301, and allocate aportion of the total virtual currency balance to each one of the userdevices 300 and 301. As illustrated in FIG. 4, the central servercomputer 100 may allocate a first portion of the total virtual currencybalance to the user device 301 at step S408 and a second portion of thetotal virtual currency balance to the user device 300 at step S412. Oneof ordinary skill in the art will appreciate that the number of userdevices illustrated in FIG. 4 is for illustrative purposes only and thatthe total virtual currency balance may be distributed among andallocated to any number of user devices that are associated with theuser profile at the user database 110. At steps S408 and S412, thecentral server computer 100 may allocate the total virtual currencybalance among all available user devices associated with the userprofile. In some embodiments, the user may specific identify one of theregistered user devices as being exempt from the virtual currencyallocation. For example, the user may register a user device used by hischild with the user profile. However, the user may not wish to allocateany virtual currency balance to the user device used by the child.

In some embodiments, the central server computer 100 may allocate thetotal virtual currency balance among the registered user devices basedon the pre-determined usage data associated with each user device. Forexample, the usage data may indicate that the central server computer100 should allocate 30% of the total virtual currency balance to theuser device 300 and 70% of the virtual currency balance to the userdevice 301. Alternatively, the control server 100 may determine that theuser device 300 (or a specific application running on the user device300) is active 40% of the time and the user device 301 (or a specificapplication running on the user device 301) is active 60% of the time,then the central server may allocate 40% of the total virtual currencybalance to the user device 300 and 60% of the virtual currency balanceto the user device 301. The activity of each device and/or eachapplication running on each device may be determined in any suitablemanner. For example, the amount of time that each application isactually open or accessed may indicate the percent activity for thatapplication or device. In another example, the number of userinteractions (e.g., the number of times that buttons are actuallydepressed within a game) can determine the percent activity for thatapplication or device. For example, if a user moves a character on theuser device 300 six hundred times within one day and he moves thatcharacter four hundred times on the user device 301 within another oneday period, then the allocation may be 60% for the user device 300 and40% for the user device 301.

The control server 100 may also retrieve a number of applicationsinstalled on each user device from the user database 110. In someinstances, the number of applications installed on a user device mayindicate the usage frequency of that user device. Accordingly, thecentral server computer 100 may allocate the total virtual currencybalance based on a number of applications installed on a user device.

Yet in other embodiments, the user may indicate one of the user devicesas a gaming device (or any other type of user device) on the userprofile and may request that more of the virtual currency balance to beallocated to the gaming device. Similarly, the user may also specify(e.g., through an appropriate user interface) the balance allocationscheme that the user would like to be applied among the registered userdevices. Such allocation scheme may be stored at the user profile andused by the central server computer 100 during balance allocation atsteps S408 and S412.

At step 410, the user device 301 may locally store the virtual currencybalance allocated to the user device 301 by the central server computer100. For example, the user device 301 may store the allocated virtualcurrency balance at a local wallet. At step 414, the user device 300 maylocally store the virtual currency balance allocated to the user device300 by the central server computer 100. For example, the user device 300may store the allocated virtual currency balance at a local wallet.

At step S416, the user may perform activities on the user device 300that may use at least a portion of the local balance stored on the localwallet of the user device 300. For example, the user may play a gameinstalled on the user device 300 using the local virtual currencybalance stored on the local wallet of the user device 300.

At step S418, the user may perform activities on the user device 301that may use at least a portion of the local balance stored on the localwallet of the user device 301. For example, the user may play the samegame which is also installed on the user device 301 using the localvirtual currency balance stored on the local wallet of the user device301. The local virtual currency balance may include virtual money,loyalty points, game points and/or game data. In some embodiments, theuser may simultaneously play the game on both user devices 300 and 301.In other embodiments, the user may play the game on the user device 300and then, subsequently, may continue playing the game on the second userdevice 301.

When the local balance on the user device 300 runs low or depletes, theuser may wish to use the local balance stored on the user device 301.Accordingly, at step S420, the user device 300 may send a balancetransfer request to the user device 301. In some embodiments, the userdevice 300 may not be able to communicate with the central servercomputer 100 to purchase additional funds. That is, the user device 300may be offline with respect to the central server 300. However, the userdevice 300 may still communicate with the user device 301 through, forexample, a local area network, Bluetooth or SMS.

At step S422, in response to the balance transfer request, the userdevice 301 may transfer at least a portion of the local virtual currencybalance stored on the local wallet of the user device 301 to the userdevice 300. The user device 300 may store the received balance at itslocal wallet. The user may continue playing the game (or performingother activities) on the user device 300 using the received balance nowstored at the local wallet of the user device 300.

At step S424, when the communication between the central server computer100 and the user device 300 is established, the central server computer100 may send a balance synchronization request to the user device 300.At step S426, in response to the balance synchronization request, theuser device 300 may send the current value of the local virtual currencybalance to the central server computer 100.

At step S428, when the communication between the central server computer100 and the user device 301 is established, the central server computer100 may send a balance synchronization request to the user device 301.At step S430, in response to the balance synchronization request, theuser device 301 may send the current value of the local virtual currencybalance to the central server computer 100.

At step S432, the central server computer 100 may determine the currentvirtual currency balance by taking a sum of the current value of thelocal virtual currency balance of the user device 300 and the currentvalue of the local virtual currency balance of the user device 301. Atstep S434, the central server computer 100 may compare the currentvirtual currency balance to the total virtual currency balance stored onthe user profile to ensure that the current virtual currency balance islower than the total virtual currency balance previously stored in theuser profile. The central server computer 100 may update the userprofile by replacing the previously stored total virtual currencybalance with the current total virtual currency balance.

In some embodiments of the invention, once the central server computer100 has the current virtual currency balance for the user's account, thecentral server computer 100 may then re-allocate virtual currencybalances to each or the devices based upon the new virtual currencybalance. This can be done whether or not the user has purchased orearned new virtual currency. This re-allocation of virtual currencyamongst different user devices can occur in some cases only after eachuser device has re-established a connection with the central servercomputer 100 so that the system as a whole has been synchronized.

In some embodiments, the central server computer 100 may compare thecurrent total virtual currency balance to a pre-determined thresholdvalue, and if the current total virtual currency balance is lower thanthe pre-determined threshold, the central sever 100 may send a messageto the user (e.g. to the user device 300 and/or user device 301) toinvite the user to acquire additional virtual currency.

The virtual currency may be acquired by purchasing, earning points oracquiring free points. For example, the user may spend money to acquirepaid points, may earn points in response to user activities or mayacquire free points that may be awarded to user, for example, to attractthe user to use the service (e.g. play the game). In some embodiments,overdraft of paid points may not be allowed. Alternatively, apre-determined amount of the available paid point balance may beavailable for overdraft. A more generous policy may apply to freepoints, e.g. a bigger percentage of the available free point balance maybe used in the offline mode for overdraft.

With the allocated balance and overdraft protection, the user plays thegame on the go in the offline mode, just like the online mode. When thelocal balance is used up in the offline mode, a prompt may come up forthe user to synchronize the activities with either the central server orother user devices, and obtain more balance. The synchronization may becarried out between the local wallet and the central wallet with thewired/wireless data connection or any other data connection thatconnects the user device to the central wallet system. Alternatively,the synchronization may be carried out between two or more user devicesusing a device-to-device connection. In an exemplary device-to-deviceconnection, a mobile phone can connect the local wallet to anotherwallet on a tablet, a desktop, or a game console through, for example,short-range Bluetooth or Wi-Fi connection, or other data exchangechannels such as via SMS.

In the device-to-device synchronization, one local wallet may askanother local wallet to release at least a portion of its balance andactivities. Since the multiple user devices will be associated with thesame user profile owned and used by a person, a family, or some veryclose friends, such requests may be granted permission quickly andreliably. For additional security, the request and response may includethe location of the user devices obtained directly from each userdevice.

In some embodiments, when multiple devices are on the same privatenetwork (e.g. a home network), the wallet discovery process may betriggered automatically to facilitate the wallet synchronizationprocess. Each local wallet may be capable of advertising its service(e.g. local balance of virtual currency) to the other local wallets onthe same network, and responding to the requests from the other localwallets. Once the service is discovered, the local wallet can still askfor explicit permission from the user before cooperating on the furtherwallet synchronization requests, or can decide to skip this step sincedevices on private network can be assumed trusted.

In device-to-central server synchronization process, the connectionbetween the local wallet stored on the user device and the centralwallet stored on the central server may be intermittent. Accordingly,the wallet synchronization request and response may be carried out in abatch mode, with each local wallet caching its activities (e.g. cachinga timestamp, an activity type such as grant points or deduct points, andID of the purchased product). Such activities are then be transferredfrom the user device to the central server when the user device isconnected to the central server. Each transferred activity may beprepended with its unique wallet ID (e.g. generated using the device IDand the user ID) to make sure that the wallet activities can be uniquelytraced back to its origin (i.e. the user device storing the wallet).

Embodiments of the invention have a number of advantages. For example,in embodiments of the invention, overdraft from the total virtualcurrency balance of the user is prevented. Synchronization of user'swallet balance and activities across multiple devices, both online oroffline, achieves smooth user experience and reduces the risk ofunwanted fraud and revenue loss due to overdraft. Accordingly,embodiments improve fraud prevention techniques and systems throughoverdraft prevention.

The various participants and elements shown in FIGS. 1-4 may operate oneor more computer apparatuses (e.g., a server computer) to facilitate thefunctions described herein. Any of the elements in FIGS. 1-4 may use anysuitable number of subsystems to facilitate the functions describedherein. Examples of such subsystems or components are shown in FIG. 5.The subsystems such as a printer 508, keyboard 514, fixed disk 516 (orother memory comprising computer readable media), monitor 520, which iscoupled to a display adapter 510, and others are shown. Peripherals andinput/output (I/O) devices, which couple to I/O controller 502, can beconnected to the computer system by any number of means known in theart, such as serial port 512. For example, serial port 512 or externalinterface 518 can be used to connect the computer apparatus to a widearea processing server computer, such as the Internet, a mouse inputdevice, or a scanner. The interconnection via system bus 500 allows thecentral processor 506 to communicate with each subsystem and to controlthe execution of instructions from system memory 504 or the fixed disk516, as well as the exchange of information between subsystems.

Specific details regarding some of the above-described aspects areprovided below. The specific details of the specific aspects may becombined in any suitable manner without departing from the spirit andscope of embodiments of the invention.

Storage media and computer readable media for containing code, orportions of code, may include any appropriate media known or used in theart, including storage media and communication media, such as but notlimited to volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage and/or transmissionof information such as computer readable instructions, data structures,program modules, or other data, including RAM, ROM, EEPROM, flash memoryor other memory technology, CD-ROM, digital versatile disk (DVD) orother optical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, data signals, datatransmissions, or any other medium which may be used to store ortransmit the desired information and which may be accessed by thecomputer. Based on the disclosure and teachings provided herein, aperson of ordinary skill in the art may appreciate other ways and/ormethods to implement the various embodiments.

It may be understood that the present invention as described above maybe implemented in the form of control logic using computer software in amodular or integrated manner. Based on the disclosure and teachingsprovided herein, a person of ordinary skill in the art may know andappreciate other ways and/or methods to implement the present inventionusing hardware and a combination of hardware and software

Any of the software components or functions described in thisapplication, may be implemented as software code to be executed by aprocessor using any suitable computer language such as, for example,Java, Objective C, C/C++ or Perl using, for example, conventional orobject-oriented techniques. The software code may be stored as a seriesof instructions, or commands on a computer readable medium, such as arandom access memory (RAM), a read only memory (ROM), a magnetic mediumsuch as a hard-drive or a floppy disk, or an optical medium such as aCD-ROM. Any such computer readable medium may reside on or within asingle computational apparatus, and may be present on or withindifferent computational apparatuses within a system or processing servercomputer.

The above description is illustrative and is not restrictive. Manyvariations of the invention may become apparent to those skilled in theart upon review of the disclosure. The scope of the invention may,therefore, be determined not with reference to the above description,but instead may be determined with reference to the pending claims alongwith their full scope or equivalents.

One or more features from any embodiment may be combined with one ormore features of any other embodiment without departing from the scopeof the invention.

A recitation of “a”, “an” or “the” is intended to mean “one or more”unless specifically indicated to the contrary.

1.-20. (canceled)
 21. A method comprising: determining, by a centralserver, a total virtual currency balance associated with a user profile,wherein the user profile is associated with a first user device and asecond user device; allocating and communicating a first portion of thetotal virtual currency balance to the first user device; allocating andcommunicating a second portion of the total virtual currency balance tothe second user device; monitoring, by the central server, usage of thefirst user device to determine an actual usage data associated with thefirst user device; and dynamically adjusting, by the central server, avalue of the first portion of the total virtual currency balanceallocated to the first user device based on the actual usage dataassociated with the first user device.
 22. The method of claim 21,wherein the first portion and the second portion of the total virtualcurrency balance are determined according to a first allocation scheme,the method further comprising: determining a second allocation schemebased on the monitoring, wherein dynamically adjusted value of the firstportion of the total virtual currency balance is determined based on thesecond allocation scheme.
 23. The method of claim 21, wherein the firstportion of the total virtual currency balance is stored locally on amemory of the first user device as a first balance and the secondportion of the total virtual currency balance is stored locally on amemory of the second user device as a second balance.
 24. The method ofclaim 23, further comprising: receiving a current value of the firstbalance from the first user device; receiving a current value of thesecond balance from the second user device; determining a sum of thecurrent value of the first balance and the current value of the secondbalance; and transmitting a message to the first user device or thesecond user device offering additional virtual currency when the sum isbelow a predetermined threshold.
 25. The method of claim 24, furthercomprising: determining that the sum is less than the total virtualcurrency balance associated with the user profile; determining thatvirtual currency spent on the first user device is higher than the firstportion of the total virtual currency balance assigned to the first userdevice; and determining that a portion of the second portion of thetotal virtual currency balance was transferred from the second userdevice to the first user device.
 26. The method of claim 21, wherein theuser profile includes a first pre-determined usage data assigned to thefirst user device and a second pre-determined usage data assigned to thesecond user device, wherein the pre-determined first usage dataindicates an assigned usage frequency for the first user device and thepre-determined second usage data indicates an assigned usage frequencyfor the second user device.
 27. The method of claim 26, wherein thefirst portion of the total virtual currency balance is allocated to thefirst user device based on the first pre-determined usage data assignedto the first user device, and the second portion of the total virtualcurrency balance is allocated to the second user device based on thesecond pre-determined usage data assigned to the second user device. 28.The method of claim 21, wherein the first user device communicates withthe second user device to receive part of the second portion from thesecond user device when the first user device is offline with respect tothe central server, wherein the part of the second portion is subtractedfrom the second portion and added to the first portion on the first userdevice.
 29. The method of claim 21, wherein at least part of the firstportion is used to acquire a service or an item provided by one or moreservers accessible via the first user device.
 30. The method of claim21, wherein the total virtual currency balance is one of digital money,loyalty points, game points and game data.
 31. The method of claim 21,further comprising: monitoring, by the central server, usage of thesecond user device to determine an actual usage data associated with thesecond user device; and dynamically adjusting, by the central server, avalue of the second portion of the total virtual currency balanceallocated to the second user device based on the actual usage dataassociated with the second user device.
 32. The method of claim 21,further comprising: preventing allocation of additional virtual currencyfrom the total virtual currency balance to the first user device or thesecond user device before retrieving a current value of the firstportion and the second portion from the first user device and the seconduser device, respectively.
 33. A central server computer comprising: aprocessor; and a computer readable medium coupled to the processor, thecomputer readable medium comprising code, executable by the processor,to implement a method comprising: determining a total virtual currencybalance associated with a user profile, wherein the user profile isassociated with a first user device and a second user device; allocatingand communicating a first portion of the total virtual currency balanceto the first user device; allocating and communicating a second portionof the total virtual currency balance to the second user device;monitoring usage of the first user device to determine actual usage dataassociated with the first user device; and dynamically adjusting a valueof the first portion of the total virtual currency balance allocated tothe first user device based on the actual usage data associated with thefirst user device.
 34. The central server computer of claim 33, whereinthe first portion of the total virtual currency balance is allocated tothe first user device based on a first predetermined usage dataassociated with the first user device, and the second portion of thetotal virtual currency balance is allocated to the second user devicebased on a second predetermined usage data associated with the seconduser device.
 35. The central server computer of claim 33, wherein thefirst portion and the second portion of the total virtual currencybalance are determined according to a first allocation scheme, andwherein dynamically adjusted value of the first portion of the totalvirtual currency balance is determined based on a second allocationscheme adjusted based on the monitoring.
 36. The central server computerof claim 33, wherein the first portion of the total virtual currencybalance is stored locally on a memory of the first user device as afirst balance and the second portion of the total virtual currencybalance is stored locally on a memory of the second user device as asecond balance, wherein the method further comprises: receiving acurrent value of the first balance from the first user device; receivinga current value of the second balance from the second user device;determining a sum of the current value of the first balance and thecurrent value of the second balance; and transmitting a message to thefirst user device or the second user device offering additional virtualcurrency when the sum is below a predetermined threshold.
 37. Thecentral server computer of claim 36, wherein the method implemented bythe code further comprises: preventing allocation of additional virtualcurrency from the total virtual currency balance to the first userdevice or the second user device before retrieving the current value ofthe first balance and the second balance.
 38. The central servercomputer of claim 36, wherein the method implemented by the code furthercomprises: determining that the sum is less than the total virtualcurrency balance associated with the user profile; determining thatvirtual currency spent on the first user device is higher than the firstportion of the total virtual currency balance assigned to the first userdevice; and determining that a portion of the second portion of thetotal virtual currency balance was transferred from the second userdevice to the first user device.
 39. The central server computer ofclaim 33, wherein at the total virtual currency balance is one ofdigital money, loyalty points, game points and game data.
 40. Thecentral server computer of claim 33, wherein the method implemented bythe code further comprises: monitoring, by the central server, usage ofthe second user device to determine an actual usage data associated withthe second user device; and dynamically adjusting a value of the secondportion of the total virtual currency balance allocated to the seconduser device based on the actual usage data associated with the seconduser device.